﻿#define _CRT_SECURE_NO_WARNINGS 1
// 原题连接：
/*
题目描述：
100
 可以表示为带分数的形式：100=3+69258714
还可以表示为：100=82+3546197
注意特征：带分数中，数字 1∼9
 分别出现且只出现一次（不包含 0
）。

类似这样的带分数，100
 有 11
 种表示法。

输入格式
一个正整数。

输出格式
输出输入数字用数码 1∼9
 不重复不遗漏地组成带分数表示的全部种数。

数据范围
1≤N<106
输入样例1：
100
输出样例1：
11
输入样例2：
105
输出样例2：
6
*/

// 开始解题：
// 方法——dfs
#include <iostream>
#include <string>
#include <cstdlib>
#include <cstring>
using namespace std;

int n = 0;
bool vis[10];
int ret = 0;

bool check(int a, int c) {
    int b = n * c - a * c;
    if (!b) {
        return false;
    }

    bool backup[10];
    memcpy(backup, vis, sizeof(vis));
    while (b) {
        int temp = b % 10;
        if (backup[temp] || temp == 0) {
            return false;
        }
        backup[temp] = true;
        b /= 10;
    }
    for (int i = 1; i <= 9; i++) {
        if (!backup[i]) {
            return false;
        }
    }
    return true;
}

void dfs_c(int a, int c) {
    if (check(a, c)) {
        ret++;
    }
    for (int i = 1; i <= 9; i++) {
        if (!vis[i]) {
            vis[i] = true;
            dfs_c(a, c * 10 + i);
            vis[i] = false;
        }
    }

}


void dfs_a(int a) {
    if (a >= n) {
        return;
    }
    for (int i = 1; i <= 9; i++) {
        if (!vis[i]) {
            vis[i] = true;
            dfs_c(a, i);
            vis[i] = false;
        }
    }
    for (int i = 1; i <= 9; i++) {
        if (!vis[i]) {
            vis[i] = true;
            dfs_a(a * 10 + i);
            vis[i] = false;
        }
    }

}

// 核心思想：将n = a + b / c转化成nc = ac + b
// 所以b = nc - ac
// 所以只需要求出所有合法的b即可
int main() {
    cin >> n;
    for (int i = 1; i <= 9; i++) {
        if (!vis[i]) {
            vis[i] = true;
            dfs_a(i);
            vis[i] = false;
        }
    }

    cout << ret << endl;
    return 0;
}